There are many occasions when it is necessary to allocate items to bins in a manner that satisfies a specified set of constraints. For example, in the management of a data center, it is necessary to allocate virtual machines (VMs) to servers, subject to the resource requirements of the VMs and the resource capacities of the servers in the data center. Allocation problems can be complex in nature. For this reason, the research community has developed various algorithms to solve different kinds of allocation problems.
Many allocation algorithms are governed by heuristics. However, heuristic-based algorithms have a number of drawbacks. First, a heuristic-based algorithm applies to only the specific allocation problem for which it was devised. Second, a heuristic-based algorithm may become outdated if the allocation problem changes. For example, a data center may evolve to incorporate new technology. Or an administrator may redefine allocation objectives, and/or reconfigure the architecture of a data center to better satisfy changing market demands. As a result of these changes, a heuristic-algorithm may no longer accurately model the data center. This, in turn, may force an engineer to revise the heuristic of the allocation framework, potentially requiring a significant amount of work.